package project;

public abstract class Player implements PlayerIF {

	int playerNum;

	static final int MINIMAX = 0;
	static final int SENSIBLE = 1;
	static final int RANDOM = 2;
	
	Player(int playerNum) {
		this.playerNum = playerNum;
	}
	
	@Override
	public Move getNextMove(GameState state) {
		return null;
	}

	@Override
	public int getNum() {
		return 0;
	}
	
	static Player newPlayer(int playerType, int playerNum) {
		switch(playerType) {
		case MINIMAX:
			return new MinimaxPlayer(playerNum);
		case SENSIBLE:
			return new SensiblePlayer(playerNum);
		case RANDOM:
			return new RandomPlayer(playerNum);
		}
		return null;
	}

	public abstract boolean isHuman();
}
